package org.dxy.domain.model.valobj;

import java.time.LocalDateTime;
import java.util.List;

/**
 * BOM 值对象 - Domain层
 * @author dxy
 * @createTime 2025/8/24
 */
public record Bom(
        /**
         * BOM 版本号，比如 V1.0、V1.1
         */
        String bomVersion,

        /**
         * BOM 类型，比如 "设计BOM"、"工艺BOM"、"装配BOM"
         */
        String bomType,

        /**
         * BOM 状态，比如 "启用"、"停用"
         */
        String status,

        /**
         * BOM 来源（是从ERP同步，还是MES内建）
         */
        String source,

        /**
         * BOM 生效时间
         */
        LocalDateTime effectiveDate,

        /**
         * BOM 失效时间
         */
        LocalDateTime expiredDate,

        /**
         * BOM 下的物料项
         */
        List<BomItem> items
) {
    
    /**
     * 创建空的BOM
     */
    public static Bom empty() {
        return new Bom(null, null, null, null, null, null, List.of());
    }
    
    /**
     * 检查BOM是否为空
     */
    public boolean isEmpty() {
        return items == null || items.isEmpty();
    }
    
    /**
     * 检查BOM是否有效
     */
    public boolean isValid() {
        return bomVersion != null && !bomVersion.trim().isEmpty() 
               && bomType != null && !bomType.trim().isEmpty();
    }
}